package com.situ.day10;

import org.junit.Test;

import java.util.*;

//集合框架 底层涉及很多数据结构知识
public class Demo {
    /**
     * List: ArrayList  有序可重复
     * Set: HashSet     无序不重复
     * Map: HashMap     key-value
     */
    @Test
    public void test1() {
        int[] array1 = new int[5];
        String[] array2 = new String[3];
        for (String str : array2) {
            System.out.println(str);
        }
        //数组缺陷数组是长度固定
        //ArrayList是对数组的封装
        //ArrayList<String> list1 = new ArrayList<>();
        List<String> list1 = new ArrayList<>();
        list1.add("java");
        list1.add("ui");
        list1.add("h5");
        list1.add("h5");
        list1.add("aa");
        //foreach
        for (String str : list1) {
            System.out.println(str);
        }
        for (int i = 0; i < list1.size(); i++) {
            System.out.println(list1.get(i));
        }
    }

    @Test
    public void test2() {
        //HashSet<String> set = new HashSet();
        Set<String> set = new HashSet<>();
        set.add("java");
        set.add("ui");
        set.add("h5");
        set.add("h5");
        set.add("aa");
        for (String str : set) {
            System.out.println(str);
        }
    }

    @Test
    public void test3() {
        // key-value 根据key能够找到value值
        //HashMap<String, String> map = new HashMap<>();
        Map<String, String> map = new HashMap<>();
        map.put("cn", "zhongguo");
        map.put("us", "meiguo");
        map.put("uk", "yingguo");

        String value1 = map.get("cn");
        System.out.println(value1);
        String value2 = map.get("uk");
        System.out.println(value2);

        System.out.println("------------");
        Set<Map.Entry<String, String>> set = map.entrySet();
        for (Map.Entry<String, String> entry : set) {
            System.out.println(entry.getKey() + "--" + entry.getValue());
        }
    }

    // Collections是集合框架的工具类
    @Test
    public void test6() {
        //集合框架里面的类型不能写基本数据类型
        List<Integer> list = new ArrayList<>();
        list.add(23);
        list.add(3);
        list.add(13);
        Integer max = Collections.max(list);
        System.out.println(max);
        System.out.println("-----------");
        Collections.reverse(list);
        for (Integer integer : list) {
            System.out.println(integer);
        }
    }

    @Test
    public void test67() {
        int num1 = 2;
        char ch = 'a';
        // byte short int     long  float double char      boolean
        // 对应八个包装数据类型
        // Byte Short Integer Long  Float Double Character Boolean
        Integer integer = 2;
        //引用数据类型默认是都是null
    }

}
